/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	act.h
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-08-23
**	Function List： 
**  History:         
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*                                              	防止重复包含
*********************************************************************************************************
*/

#ifndef _ACT_H_
#define _ACT_H_
/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/



/*
*********************************************************************************************************
*                                              	头文件
*********************************************************************************************************
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#include "stm32h7xx_hal.h"
#include "schedule_lib.h"
#include <rtthread.h>
/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/
#define TYPE_ACT_ARG_NUM	5

#define ACT_ARG_MAX_SIZE	8
/*
*********************************************************************************************************
*                                              枚举和结构体类型定义
*********************************************************************************************************
*/

typedef enum{
	ACT_ERR_NONE, 
	ACT_ERR_INIT,
	ACT_ERR_MALLOC,
	ACT_ERR_FREE,
	ACT_ERR_HALT,
}act_err_t;

//typedef enum{
//	ACT_TYPE_MOTOR,
//	ACT_TYPE_PUMP,
//	ACT_TYPE_TIME,
//}act_type_t;


typedef struct ACT_T{
	struct 		ACT_T* next;
	int32_t	  arg[ACT_ARG_MAX_SIZE];
//	uint8_t 	(*func)(struct ACT_T* p_act);
		uint8_t 	(*func)(void* p_act);
	schedule_cb_t* p_tcb;
}act_t;

typedef enum {
	ACT_RLT_NONE = 0,
	ACT_RLT_DEL  = 0x01,
	ACT_RLT_ERR  = 0x02,
}act_rlt_t;

/*
*********************************************************************************************************
*                                              	全局变量声明
*********************************************************************************************************
*/
extern struct rt_mempool rt_act_mp;
/*
*********************************************************************************************************
*                                              	函数声明
*********************************************************************************************************
*/
act_err_t act_init(void);

//act_t* act_malloc(void);

//act_err_t act_free(act_t* p_act);

void act_ticks(void* p_list);

//uint8_t act_pend(act_t* p_act);

//uint8_t act_post(act_t* p_act);

//void act_report(void* p_task_cb, uint32_t time);

#endif
